package lzupdater.log;

//LZRosterUpdater, a java client to update LZRoster
//Copyright (C) 2008 Fraskor from Krasus (e-mail: fraskor@gmail.com)
//
//This file is part of LZRosterUpdater.
//
//LZRosterUpdater is free software: you can redistribute it and/or modify
//it under the terms of the GNU General Public License as published by
//the Free Software Foundation, either version 3 of the License, or
//(at your option) any later version.
//
//This program is distributed in the hope that it will be useful,
//but WITHOUT ANY WARRANTY; without even the implied warranty of
//MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
//GNU General Public License for more details.
//
//You should have received a copy of the GNU General Public License
//along with this program.  If not, see <http://www.gnu.org/licenses/>.

/**
 * 
 * @author Fraskor
 */
public class SynchronizedLoggerListerner implements LoggerListener {

	public static LoggerListener create(LoggerListener loggerListener) {
		if (loggerListener == null)
			return null;
		return new SynchronizedLoggerListerner(loggerListener);
	}

	private final LoggerListener loggerListener;
	private final Object lock = new Object();

	private SynchronizedLoggerListerner(LoggerListener loggerListener) {
		this.loggerListener = loggerListener;
	}

	public LoggerLevel getLoggerLevel() {
		LoggerLevel level = null;
		synchronized (lock) {
			level = loggerListener.getLoggerLevel();
		}
		return level;
	}

	public void clear() {
		synchronized (lock) {
			loggerListener.clear();
		}
	}

	public void displayMsg(String message, LoggerLevel level) {
		synchronized (lock) {
			loggerListener.displayMsg(message, level);
		}
	}

}
